//============================================================================
// Name        : compilador_cpp.cpp
// Author      : Izandro
// Version     :
// Copyright   : Your copyright notice
// Description : Hello World in C++, Ansi-style
//============================================================================

#include <iostream>
#include <fstream>
#include <string>
using namespace std;
#include "token.h"
#include "analisador.h"
#include "sintatico.h"
#include "tabelasimbolo.h"

int main() {

	tabelasimbolo tabelasimbolos;
	variavel vtemp;
	procedimento proctemp;

	analisador lexico_analisador("arquivo.txt");
	sintatico sintatico_analisador;

	lexico_analisador.processar();
	lexico_analisador.print("relatorio_saida.txt");

	sintatico_analisador.analisarsintatico(lexico_analisador.saida_lexico);

	proctemp.addlocalvar(vtemp);
	vtemp.setall("str2", "funcao", "inteiro");
	proctemp.addlocalvar(vtemp);
	vtemp.setall("int2", "param", "jedi");
	proctemp.addparametros(vtemp);
	proctemp.addlocalvar(vtemp);

	proctemp.setcategoria("procedimento");
	//proctemp.print();
	//cout << proctemp.buscarlocal(vtemp);

	cout << endl;
	tabelasimbolos.destino = "global";
	vtemp.setall("aint32", "parame", "lea64");
	tabelasimbolos.addvar(vtemp);
	tabelasimbolos.addvar(vtemp);
	tabelasimbolos.addvar(vtemp);

	vtemp.setall("vpara", "parame", "fuuu32");
	proctemp.addparametros(vtemp);

	tabelasimbolos.addprocedimento(proctemp);
	proctemp.setnome("printf");
	tabelasimbolos.addprocedimento(proctemp);
	proctemp.setnome("bzero");
	tabelasimbolos.addprocedimento(proctemp);

	tabelasimbolos.destino = "nome do procedimento";
	tabelasimbolos.addvar(vtemp);

	tabelasimbolos.print();

	return 0;
}
